package cn.hongxin.sap.conn.utils;

import org.apache.commons.io.FilenameUtils;

import java.io.*;
import java.util.Comparator;
import java.util.List;

public class Test1 {
    /**
     * 获取所有XML文件
     * @param path 文件路径
     * @param fileList 存放所有XML文件的列表
     */

    public void getXmlFiles(String path, List<File> fileList) throws Exception{
        File file = new File(path);
        File[] files = file.listFiles();
        for (File fileIndex : files) {
            if (!fileIndex.exists()) {
                throw new NullPointerException("Cannot find " + fileIndex);
            } else if (fileIndex.isFile()) {
                fileList.add(fileIndex);
                System.out.println(fileIndex.getName());
            } else {
                if (fileIndex.isDirectory()) {
                    getXmlFiles(fileIndex.getAbsolutePath(), fileList);
                }
            }
        }
    }
    /*
    * 读取文件创建时间
         */
    public static void getCreateTime(){
        String filePath = "F:\\SQL\\getTime.txt";
        String strTime = null;
        try {
            Process p = Runtime.getRuntime().exec("cmd /C dir "
                    + filePath
                    + "/tc" );
            InputStream is = p.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String line;
            while((line = br.readLine()) != null){
                if(line.endsWith(".txt")){
                    strTime = line.substring(0,20);
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("创建时间    " + strTime);
        //输出：创建时间   2009-08-17  10:21
    }

    public static void main(String[] args) {
        //声明一个HashMap，用于存放XML文件，格式：<文件名，文件>，以文件名为KEY，可以得到整个文件所在的路径和文件名
        /*Map<String, String> xmlMap = new HashMap<>();
        Test1 lxf = new Test1();
        //存放xml文件的根目录
        String filePath = ("F:\\\\companyres\\\\gitRep\\\\BSMVC\\\\MyMvcProJectManager\\\\Scripts\\\\Kindeditor\\\\attached\\\\");
        //声明一个List，用于存放所有得到的XML文件
        List<File> fileList = new ArrayList<>();
        lxf.getXmlFiles(filePath, fileList);
        for (File f : fileList) {
            System.out.println(f);
            //把每个文件存放到HashMap中
            xmlMap.put(f.getName(),f.getAbsolutePath());
        }*/
        //System.out.println(xmlMap);
        getCreateTime();
    }


   public static class StringCompartor implements Comparator<String> { //用来封装一个排序规则的方法
        // static <T> void
        // sort(T[] a, Comparator<? super T> c);
        // 根据指定比较器产生的顺序对指定对象数组进行排序。
        // 由于
       @Override
       public int compare(String arg0, String arg1) {//接收两个参数
           // TODO Auto-generated method stub
           // compareTo(String anotherString)
           // 按字典顺序比较两个字符串。
           return arg0.compareTo(arg1);//返回一个排序规则
       }

       }

    public static class TypeSorter implements Comparator{
        @Override
        public int compare(Object x, Object y) {
            if (x == null && y == null){
                return 0;
            }
            if (x == null){
                return -1;
            }
            if (y == null) {
                return 1;
            }
            String s = FilenameUtils.getExtension(((File)x).getName());
            String d = FilenameUtils.getExtension(((File)y).getName());
            return s.compareTo(d);
        }
    }

    public static class SizeSorter implements Comparator {
        @Override
        public int compare(Object x, Object y) {
            if (x == null && y == null) {
                return 0;
            }
            if (x == null) {
                return -1;
            }
            if (y == null) {
                return 1;
            }
            Integer n = (int) ((File)x).length();
            Integer k = (int) ((File)y).length();
            return n.compareTo(k);
        }
    }

    public static class NameSorter implements Comparator {
        @Override
        public int compare(Object x, Object y) {
            if (x == null && y == null) {
                return 0;
            }
            if (x == null) {
                return -1;
            }
            if (y == null) {
                return 1;
            }
            String s = ((File)x).getName();
            String d = ((File)y).getName();
            return s.compareTo(d);
        }
    }
}
